package pck_tramitedocu.pck_src.pck_pojos;

import java.io.Serializable;
import pck_tramitedocu.pck_src.pck_utiles.Cls_Validaciones;
import pck_tramitedocu.pck_src.pck_utiles.cls_utilitarios;
import pck_tramitedocu.pck_src.pck_utiles.enums.TipoDespliegueEnum;

public class Cls_Trabajador
        implements Serializable {

    private String codigo = "";
    private String nombres = "";
    private String apellidos = "";
    private String contrasena = "";
    private Boolean estado;
    private Integer tipo_usuario_area;
    private String cargo = "";
    private String area = "";
    private String profesion = "";
    private String opciones = " ";
    private String correo = "";
    private String dni_jefe = "";
    private Boolean va_proyectar;
    private String codigo_visto_bueno = "";
    private String codigo_area = "";
    private String tamanio_archivo;
    private String cant_archivo_puede_copiar;
    private String cod_area_pertenece;
    private String cod_directiva_pertenece;
    private String dni;
    private String message_logueo;
    private Boolean tiene_acceso_logueo;
    private Boolean esta_vacaciones;
    private TipoDespliegueEnum tipoDespliegue;
    private String urlSistema;

    public String getUrlSistema() {
        return urlSistema;
    }

    public void setUrlSistema(String urlSistema) {
        this.urlSistema = urlSistema;
    }

    
    public String getUrlSistemaDesplegado(){
        return tipoDespliegue.getDominio();
    }
    public TipoDespliegueEnum getTipoDespliegue() {
        return tipoDespliegue;
    }

    public void setTipoDespliegue(TipoDespliegueEnum tipoDespliegue) {
        this.tipoDespliegue = tipoDespliegue;
        this.urlSistema = tipoDespliegue.getDominio();
    }
    public Boolean getEsta_vacaciones() {
        return esta_vacaciones;
    }

    public void setEsta_vacaciones(Boolean esta_vacaciones) {
        this.esta_vacaciones = esta_vacaciones;
    }

    public Boolean getTiene_acceso_logueo() {
        /*  36 */ return this.tiene_acceso_logueo;
    }

    public void setTiene_acceso_logueo(Boolean tiene_acceso_logueo) {
        /*  40 */ this.tiene_acceso_logueo = tiene_acceso_logueo;
    }

    public String getMessage_logueo() {
        /*  45 */ return this.message_logueo;
    }

    public void setMessage_logueo(String message_logueo) {
        /*  49 */ this.message_logueo = message_logueo;
    }

    public String getDni() {
        /*  54 */ return this.dni;
    }

    public void setDni(String dni) {
        /*  58 */ this.dni = dni;
    }

    public String getCod_directiva_pertenece() {
        /*  63 */ return this.cod_directiva_pertenece;
    }

    public void setCod_directiva_pertenece(String cod_directiva_pertenece) {
        /*  67 */ this.cod_directiva_pertenece = cod_directiva_pertenece;
    }

    public String getCod_area_pertenece() {
        /*  72 */ return this.cod_area_pertenece;
    }

    public void setCod_area_pertenece(String cod_area_pertenece) {
        /*  76 */ this.cod_area_pertenece = cod_area_pertenece;
    }

    public String getCant_archivo_puede_copiar() {
        /*  81 */ return this.cant_archivo_puede_copiar;
    }

    public void setCant_archivo_puede_copiar(String cant_archivo_puede_copiar) {
        /*  85 */ this.cant_archivo_puede_copiar = cant_archivo_puede_copiar;
    }

    public String getTamanio_archivo() {
        /*  89 */ return this.tamanio_archivo;
    }

    public void setTamanio_archivo(String tamanio_archivo) {
        /*  93 */ this.tamanio_archivo = tamanio_archivo;
    }

    public String getCodigo_area() {
        /*  98 */ return this.codigo_area;
    }

    public void setCodigo_area(String codigo_area) {
        /* 102 */ this.codigo_area = codigo_area;
    }

    public Boolean getVa_proyectar() {
        /* 106 */ return this.va_proyectar;
    }

    public void setVa_proyectar(Boolean va_proyectar) {
        /* 110 */ this.va_proyectar = va_proyectar;
    }

    public String getCodigo_visto_bueno() {
        /* 114 */ return this.codigo_visto_bueno;
    }

    public void setCodigo_visto_bueno(String codigo_visto_bueno) {
        /* 118 */ this.codigo_visto_bueno = codigo_visto_bueno;
    }

    public String getDni_jefe() {
        /* 122 */ return this.dni_jefe;
    }

    public void setDni_jefe(String dni_jefe) {
        /* 126 */ this.dni_jefe = dni_jefe;
    }

    public Cls_Trabajador() {
    }

    public Cls_Trabajador(String codigo) {
        /* 133 */ this.codigo = codigo;
    }

    public Cls_Trabajador(String codigo, String nombres, String correo) {
        /* 137 */ this.codigo = codigo;
        /* 138 */ this.nombres = nombres;
        /* 139 */ this.correo = correo;
        /* 140 */ this.tipo_usuario_area = Integer.valueOf(99);
        /* 141 */ setCodigo_area(".");
    }

    public Cls_Trabajador(String codigo, String nombres, String contrasena, boolean estado) {
        /* 145 */ this.codigo = codigo;
        /* 146 */ this.nombres = nombres;
        /* 147 */ this.contrasena = contrasena;
        /* 148 */ this.estado = Boolean.valueOf(estado);
    }

    public Cls_Trabajador(String codigo, String nombres, String cargo, String area, String profesion) {
        /* 152 */ this.codigo = codigo;
        /* 153 */ this.nombres = nombres;
        /* 154 */ this.cargo = cargo;
        /* 155 */ this.area = area;
        /* 156 */ this.profesion = profesion;
    }

    public Cls_Trabajador(String codigo, String nombres, String cargo, String area, String profesion, String cod_area, String tipo_usuario, String correo) {
        /* 160 */ this.codigo = codigo;
        /* 161 */ this.nombres = nombres;
        /* 162 */ this.cargo = cargo;
        /* 163 */ this.area = area;
        /* 164 */ this.profesion = profesion;
        /* 165 */ this.codigo_area = cod_area;
        /* 166 */ this.tipo_usuario_area = Integer.valueOf(Integer.parseInt(tipo_usuario));
        /* 167 */ this.correo = correo;
    }

    public Cls_Trabajador(String codigo, String nombres) {
        /* 171 */ this.codigo = codigo;
        /* 172 */ this.nombres = nombres;
    }

    public String getCorreo() {
        /* 176 */ return this.correo;
    }

    public void setCorreo(String correo) {
        /* 180 */ this.correo = correo;
    }

    public String getOpciones() {
        /* 184 */ return this.opciones;
    }

    public void setOpciones(String opciones) {
        /* 188 */ this.opciones = opciones;
    }

    public String getProfesion() {
        /* 192 */ return this.profesion;
    }

    public void setProfesion(String profesion) {
        /* 196 */ this.profesion = profesion;
    }

    public String getArea() {
        /* 200 */ return this.area;
    }

    public void setArea(String area) {
        /* 204 */ this.area = area;
    }

    public String getCargo() {
        /* 208 */ return this.cargo;
    }

    public void setCargo(String cargo) {
        /* 212 */ this.cargo = cargo;
    }

    public int getTipo_usuario_area() {
        /* 216 */ return this.tipo_usuario_area.intValue();
    }

    public void setTipo_usuario_area(int tipo_usuario_area) {
        /* 220 */ this.tipo_usuario_area = Integer.valueOf(tipo_usuario_area);
    }

    public String getCodigo() {
        /* 224 */ return this.codigo;
    }

    public void setCodigo(String codigo) {
        /* 228 */ this.codigo = codigo;
    }

    public String getContrasena() {
        /* 232 */ return this.contrasena;
    }

    public void setContrasena(String contrasena) {
        /* 236 */ this.contrasena = contrasena;
    }

    public boolean isEstado() {
        /* 240 */ return this.estado.booleanValue();
    }

    public void setEstado(boolean estado) {
        /* 244 */ this.estado = Boolean.valueOf(estado);
    }

    public String getNombres() {
        /* 248 */ return this.nombres;
    }

    public void setNombres(String nombres) {
        /* 252 */ this.nombres = nombres;
    }

    public String getApellidos() {
        /* 256 */ return this.apellidos;
    }

    public void setApellidos(String apellidos) {
        /* 260 */ this.apellidos = apellidos;
    }

    public String toString() {
        /* 265 */ return "Cls_usuario{codigo=" + this.codigo + "nombres=" + this.nombres + "apellidos=" + this.apellidos + "tipo_usuario_area=" + this.tipo_usuario_area + "cargo=" + this.cargo + "area=" + this.area + "profesion=" + this.profesion + "correo=" + this.correo + '}';
    }

    public String obtenerFirmaDocumento() {
        if (this.tipo_usuario_area.intValue() == 3) {
            return getCodigo_area() + "|" + getProfesion() + " " + getNombres() + "|" + getCargo() + "|" + getCodigo_visto_bueno() + "|";
        }
        return getCodigo() + "|" + getProfesion() + " " + getNombres() + "|" + getCargo() + "|" + getCodigo_visto_bueno() + "|";
    }

    public boolean opcionEsCheckBox(String codigos, String objetivo_check) {
        if ((this.tipo_usuario_area != null) && (Cls_Validaciones.elUsuarioIsJefe(this))) {
            setCodigo(getCodigo_area());
        }
        String chk = "";
        StringBuffer html = new StringBuffer();
        if (Cls_Validaciones.estaUsuarioSeleccionado(codigos, this)) {
            chk = "checked='true'";
        }
        html.append("<td><center><input type='checkbox' class='");
        html.append(objetivo_check).append( "' ");
        html.append(chk);
        html.append("checkcodigo='");
        html.append(getCodigo());
        html.append("'checkcargo='");
        html.append(getCargo());
        html.append("'checknombre='");
        html.append(getNombres());
        html.append("'checkcodigo_area='");
        html.append(getCodigo_area());
        html.append("'checkprofesion='");
        html.append(getProfesion());
        html.append("'checkmail='");
        html.append(getCorreo());
        html.append("'checktipo_usuario_area='");
        html.append(getTipo_usuario_area());
        html.append("'checkcodigo_area='");
        html.append(getCodigo_area());
        html.append("'</center></td>");
        setOpciones(html.toString());
        return true;
    }

    public boolean opcionEsComboBox(String codigos, String objetivo_check) {
        if (Cls_Validaciones.elUsuarioIsJefe(this)) {
            setCodigo(getCodigo_area());
        }
        String chk = "";
        StringBuffer html = new StringBuffer();
        String sel_presid = null;
        String sel_miembr = null;
        String var_contiene_codigo_cargo = Cls_Validaciones.estaComboBoxMiembrosSeleccionado(codigos, this);
        if (var_contiene_codigo_cargo != null) {
            chk = "disabled='true'";
            if (var_contiene_codigo_cargo.compareToIgnoreCase("001") != 0){
                sel_miembr = "selected";
            } else {
                sel_presid = "selected";
            }
        }
        html.append("<td><center><select id='cmb_");
        html.append(getCodigo());
        html.append("' onchange='cambiar_");
        html.append(getCodigo()).append("()' ");
        html.append(chk);
        html.append("><option value='001' ");
        html.append(sel_presid);
       html.append(">PRESIDENTE</option><option value='002' ");
       html.append(sel_miembr);
       html.append(">MIEMBRO</option></select></center><center><div id='dv_");
       html.append(getCodigo());
       html.append("'></div></center></td><script type='text/javascript'>function cambiar_");
       html.append(getCodigo());
       html.append("(){var dat_");
       html.append(getCodigo());
       html.append(" = $('#cmb_");
       html.append(getCodigo());
       html.append("').val();if(dat_");
       html.append(getCodigo());
       html.append("=='002'){$('#dv_");
       html.append(getCodigo());
       html.append("').html(getDivParaMiembro('");
       html.append(getCodigo());
       html.append("'));}else{$('#dv_");
       html.append(getCodigo());
       html.append("').html(' ');}}</script>");
        setCargo(html.toString());
        return true;
    }

    public boolean opcionEsLink() {
        StringBuffer html = new StringBuffer();
        html.append("<center><a href='#!' class='modUsuario' id='");
        html.append(getCodigo());
        html.append("', nomb='");
        html.append(getNombres());
        html.append("'>Administrar</a></center>");
        setOpciones(html.toString());
        return true;
    }

    public String obtenerInformacionParaUsuarioLogueado() {
        StringBuilder retorno = new StringBuilder();
        retorno.append((this.tipo_usuario_area.intValue() == 3 ? getCodigo_area() : getCodigo()) + "|");
        retorno.append(getProfesion() + " " + getNombres() + "|");
        retorno.append(getCargo() + "|");
        retorno.append(getCodigo_area() + "|");
        retorno.append(getCodigo_visto_bueno() + "|");
        retorno.append(getTipo_usuario_area() + "|");
        return retorno.toString();
    }
    public static Cls_Trabajador obtenerTrabajadorDesdeInformacionDeUsuarioLogueado(String data_formateada){
        data_formateada = data_formateada.replace("|", "-");
        Cls_Trabajador trabajador = new Cls_Trabajador();
        String data[] = data_formateada.split("-");
        trabajador.setCodigo(data[0]);
        trabajador.setProfesion(data[1]);
        trabajador.setCargo(data[2]);
        trabajador.setCodigo_area(data[3]);
        trabajador.setCodigo_visto_bueno(data[4]);
        trabajador.setTipo_usuario_area(Integer.parseInt(data[5]));
        return trabajador;
    }
    public boolean isJefeInmediatoDe(Cls_Trabajador trabajador){
        //Este metodo verifica si el trabajador de la session es jefe inmediato del emisor del documento
        Cls_Trabajador trabajadorSession = this;
        String codigoDirectivaSession = trabajadorSession.getCodigo_visto_bueno();
        String codigoDirectivaEmisor = trabajador.getCodigo_visto_bueno();
        String codigoDirectivaPerteneceEmisor = trabajador.getCod_directiva_pertenece();
        if(cls_utilitarios.areStringEquals(codigoDirectivaSession, codigoDirectivaEmisor)){
            return false;
        }
        if(cls_utilitarios.areStringEquals(codigoDirectivaSession, codigoDirectivaPerteneceEmisor)){
            return true;
        }
        return false;
    }
}
